3d printer

ABSTRACT

A 3D printer incorporating two angular axes as an inverted SCARA arm and a vertical, linear Z-axis, is described. A platter on which a 3D object is built is rotated around lambda axis and revolved around a lambda axis. Embodiments are described that: (i) are free of belts, pulleys, cables and other soft drive mechanisms; (ii) are free of any lead-screw compensating devices; (iii) are free of rectangular box frame; (iv) translate X-Y-Z voxel coordinates into an angular coordinate system, optionally in real-time; (v) optimize non-sinusoidal drive waveforms for stepping motors; (vi) deal with special cases at or near the lambda axis; (vii) measure and compensate for non-orthogonal platter skew. Both device and method embodiments are claimed.

This application claims priority to U.S. Provisional Application No.62/043,293 filed Aug. 28, 2014, docket number 45-001P.

TECHNICAL FIELD

The field of the invention is manufacturing tools using three or moreaxes to manufacture a three dimensional object. Embodiments includeadditive manufacturing machines. The invention incorporates an invertedSCARA arm driving a platform on which an object is manufactured.

BACKGROUND OF INVENTION

A 3D printer is a device, and method of using the device, to create athree-dimensional object from an electronic file that defines the shapeof the object. 3D printers may be additive or subtractive in that theybuild up the object on a platform or build plate by adding material, orcreate the object by subtracting material. Most 3D printers areadditive. Most milling machine and lathe operations are subtractive, forcomparison. A typical additive 3D printer uses a head, also called anextruder or print head, which deposits small amounts of material at atime. The material may be liquefied in the head by heat, placed on theobject being built, which then hardens as it cools. An alternativesystem uses a material that is hardened or polymerized by the use oflight, UV light, other radiation or heat. Another alternative systemuses a tank of liquid or gel, which is hardened point-by-point orpiece-wise by the head.

A core unit of material in the object, or the definition of that unit ina source file, is often referred to as “voxel,” which correspondsroughly to volumetric pixel. A 3D source file may include vector or facedefinitions, rather than, or in supplement to, voxels. A 3D printer mayconvert some or all of a 3D source file to voxels, or it may convert thesource data to a series of vectors, which are typically in a plane.

The prior art of 3D printers are based on an X-Y-Z, 3-axis, Cartesian,orthogonal grid. The X-Y axes usually define a horizontal plane, withthe Z-axis being vertical. The object is formed in one X-Y plane at atime, with the Z-axis incrementing continually in steps. For each Z-axisincrement, an X-Y plane is printed. The head in the X-Y plane may movein a repetitive scanning pattern, or in a series of vector motions, orboth.

A characteristic of this design is that it requires three motors,effectively one for each of the X-Y-Z axes, not including a filamentdrive motor in the print head. The 3D printer is typically constructedin a box frame (a six-sided or five-sided frame enclosing the mechanismsand build surface), with each motion controlled by at least one screwdrive or belt, and the build plate or its support moving on twoorthogonal pairs of parallel slides. Alternatively, the head may move onthe two orthogonal pairs of parallel slides with the platter fixed X-Yand moving vertically in the Z-axis. Thus, a typical design requires abox frame, 3 motors, 3 or more screws or belts, and four to six slides.Maintaining true orthogonality of the axes is a challenge. For someimplementations, maintaining accuracy and linearity on one or more axesis also a challenge.

Prior art includes Fuse Deposit Modeling, or FDM™; FDM™ is a trademarkof Stratasys, Inc. Prior art includes fused filament fabrication (FFF)and Plastic Jet Printing (PJP).

Prior art includes SCARA (Selective Compliance Robot Arm) arms, invertedSCARA arms, and robotic SCARA arms.

Embodiments of this invention include subtractive as well as additivemanufacturing machines.

SUMMARY OF INVENTION

This invention overcomes weaknesses in the prior art.

The invention uses “angular” coordinates in place of Cartesian X-Ycoordinates for the horizontal plane.

The two axes in the horizontal plane are rotation of a turntable aboutits center axis (the lambda axis), and rotation of the turntable arounda portion of a swing axis away from the center of the turntable (thetheta axis). The Z-axis is a traditional vertical axis. In oneembodiment a vertical screw within a vertical column drives the head orextruder block comprising a material nozzle on the Z-axis. In oneembodiment a Z-axis drive screw or linear motor drives a horizontalbeam; the beam comprises an extruder head; one or more nozzles in theextruder head generate the material used to additively build an objectby the device.

One embodiment uses software to translate from the X-Y linear coordinatesystem in the source file to lambda and theta angular values. In thisembodiment, the source data may be viewed as voxels (points, lines,edges, curves, faces, surfaces, textures or volumes defined at least inpart by one or more voxels) consisting of X, Y, and Z scalarcoordinates; while the corresponding voxel data for the embodimentconsists of lambda, theta and Z scalar coordinates. The range of thesource X, Y, and Z coordinates are generally within the physical rangeof the machine, (unless some post-coordinate scaling or clipping isperformed); while the range of the lambda and theta coordinates arenecessarily within the range of [0°, 360°), although a machine may havea smaller range of these two coordinates. In one embodiment, the rangeof lambda is [0°, 360°) and the range of theta is smaller than [0°,360°). Note that secondary factors regarding voxels, such as tolerances,velocity and acceleration may be similarly converted from an X-Y-Zcoordinate system to the lambda-theta-Z coordinate system. We refer toall such coordinate conversions simply as, “coordinate translation.” Insome embodiments there is no translation from the source Z coordinate tothe target Z coordinate. In other embodiments, such as using skewcorrection discussed below, there is also coordinate translation fromthe source Z scalar to the target Z scalar.

One embodiment measures the non-orthogonality between the plane of theturntable (or build surface) and the embodiment's effective mechanicalZ-axis. This measurement identifies an error that may be referred to asskew. Note that since skew is the offset of the turntable or platterplane from perfect orthogonally from the Z-axis, at least two scalarsare required to define skew. This embodiment uses this measurement tooffset at least one of the three coordinates: lambda, theta, and Z. Skewcorrection may be computationally performed at the same time as othercoordinate translation, or separately before (i.e., in the X-Y-Z space)or after (i.e., in the lambda-theta-Z space).

In another embodiment, the software treats the volumes, or voxels, nearthe lambda axis as a special case. In particular, the speed of thelambda axis may be limited in or near these locations.

In yet another embodiment, the software treats the volumes, or voxels,at the lambda axis as a special case. In particular, the turntable maybe rotated 180°.

In yet another embodiment, the invention (all three axes) is free ofcombinations of belts, cables, pulleys, and chains, including being freeof all of these.

In yet another embodiment, the turntable is connected directly to thelambda motor shaft such that the rotational angle of the turntable isthe same as the rotational angle of the lambda motor shaft. Thisembodiment is free of gears or other parts that move relative to eachother between the lambda motor shaft and the turntable.

In yet another embodiment, the lambda motor is connected directly to thetheta motor shaft via a rigid arm such that the rotational angle of therigid arm is the same as the rotational angle of the theta motor shaft.This embodiment is free of gears or other parts that move relative toeach other between the theta motor shaft and the lambda motor.

In yet another embodiment, the invention comprises a single screw, orthreaded rod, used to drive the Z-axis.

In yet another embodiment, the extruder head is fixed directly orindirectly to the Z-axis drive, free of both X and Y drive mechanisms.

In yet another embodiment the extruder head is free of all mechanicaldrives, between the base of the printer and the extruder head, otherthan the Z-axis and the filament drive.

In yet another embodiment, the invention is free of a box frame. Thatis, free of a rectangular (or equivalent, such as cylindrical) framethat provides required mechanical support for any of the three motionaxes.

In yet another embodiment, the invention comprises only a single,structural, fixed vertical component: the Z-axis rail.

In yet another embodiment, the head is a component of a singlehorizontal beam supported at one end, with that end being attached tothe Z-axis drive column.

In yet another embodiment, the invention is free of any components tocompensate for non-perfect alignment of one or more lead screws or drivescrews.

In yet another embodiment, the invention comprises an angular openingbetween the build surface and the extruder head, around the center ofthe turntable, platter or build surface that is at least 350°, or 330°,or 300°, or 270° or 220°, or 180°, or 150°, or 120°. This angularopening is free of all elements of the embodiment; in particular, freeof frame elements. Such an opening permits free access to the part beingbuilt. In particular, monolithic parts that are larger, in both the X-Yplanes, than the sides of a volume that encloses the embodiment, may beconstructed in steps.

In yet another embodiment, coordinate translation is performed in realtime, during operation of the 3D printer.

In yet another embodiment, the turntable, platter or build plate isremovable without tools. In yet another embodiment, the turntable is, orsupports, the platter. This specification and the claims refer to a“build surface.” This is the reference surface on which a part is built,and is typically the zero reference point for Z-axis measurements.Typically, the build surface is the upper surface, either real orvirtual, of a platter or build plate. It is useful to think of thissurface as a reference plane or in a reference plane, rather than aphysical part such as a removable platter. Note that in variousembodiments there may or may not be various layers between the movingturntable and the part being built. One such later may be a removable,but permanent platter. Another such layer may be a single-use“tablecloth” that may be provided by a user, placed underneath the part.It may be necessary to think of the build surface as a physical object,such as a platter driven by a turntable. Thus, a platter may beconstrued to mean a build surface, and vice versa. Other names for theplatter are “build surface” or “build plate.” In yet another embodimentthe turntable or platter may be removed, replaced, or added with anautomated mechanism. In one embodiment the platter is secured to theturntable, either vertically, horizontally, or both, with magnets. Threemagnets, six magnets, or magnet pairs may be used. In one embodiment theturntable or platter is effectively secured in the horizontal plane withalignment pins, posts, recesses mating detents, screws, clips, otherfasteners, and the like, and is held in place by gravity.

A working surface for a part is often called a build plate in the priorart because it does not move. In our embodiments the build plate moves:being driven by a turntable. Thus the term “platter” is moredescriptive, although a build plate and a platter serve the samefunction, and may be construed, when appropriate, as the same orequivalent part and function.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 shows a perspective view of one embodiment of the 3D printer.

FIG. 2 shows a bottom view of one embodiment of the 3D printer, showingthe three motor locations.

FIG. 3 shows a front view of one embodiment of the 3D printer, showingthe Z rail, base plate, turntable and platter.

FIG. 4 shows a side view of one embodiment of the 3D printer, showingthe boom, Z rail, legs, and two motors.

FIG. 5 shows an embodiment of drive waveforms for a stepper motor.

FIG. 6 shows an exemplary view of two positions of the theta arm.

DESCRIPTION OF EMBODIMENTS

All embodiments shown and discussed are exemplary only and non-limiting.As those trained in the art know, there are many alternative materials,configurations, structures and method steps that implement the claimedinvention.

Note that the term, “rotate” describes a physical or virtual objectrotating around an axis internal to the object. For example, an audiorecord revolves around the spindle on a common (if dated) record player.Rotation is physically implemented with rotary motion.

Whereas, the word “revolve” describes a physical or virtual objectmoving in an arc, without necessary rotation, around an axis that maynot be within the object. For example, consider a person standing andholding a mechanical compass; the compass needle rotates around a pin(to indicate magnetic north) while, if the person moves his feet on avertical axis to face in a different direction, the compass bodyrevolves around vertical axis of the person. In this example, we mayconsider the axis of the person to be the theta axis and the axis of thecompass needle to be the lambda axis.

FIG. 1 shows a perspective view of one embodiment. Horizontal base plate01 is a primary structural element. The base plate 01 is supported bythree legs 03, which mate with three leg footers, not shown, to supportthe device on a bench, desk, floor or other support surface. In oneembodiment, the base plate 01 is also supported by the Z rail footer 17.The vertical Z rail 02 is a second primary structural element. The Zrail 02 encloses on two sides the Z-axis threaded rod 11, which in turndrives the boom 06 up and down on the Z rail 02, via a lead screw nut,not shown. The boom 06 rides on the Z rail 02 via four bearings 12 withspacers 15. Mounted on or in the boom 06 are an extruder 16 and anenclosure cover 27 for a portion of the extruder, filament drive motor,and fan (also called a fan cover, or enclosure). The extruder 16 ismounted on the boom behind an extruder plate, not shown, and theenclosure cover 27. A Z rail top plate 08 mounts at the top of the Zrail 02 and secures the top of the Z-axis threaded rod 11 with abearing, shown but not numbered. The Z-axis threaded rod 11 is driven bythe Z-axis motor, 05Z. The Z rail 02 is terminated at the bottom withthe Z rail footer 17. The extruder block 16 includes as least one nozzlethat dispenses an additive material. Some embodiments use multipleextruders or extruders with multiple nozzles. Typically, the extruderblock and nozzle are fed from a filament, which is heated in theextruder or in the nozzle. The nozzle is not visible in this Figure. Ahole 31 is provided, through which an additive material filament, notshown, is fed. Not shown is a filament drive motor, also identified asthe “fourth motor.” A power switch, 30, is shown. The turntable is shownas 23. A platter or build surface, not shown, may be on top of theturntable 23. An enclosure for the extruder, filament drive motor, andfan is shown as 27.

FIG. 2 shows an exemplary bottom view. Duplicate reference designatorsfrom other Figures refer to the same component. The base plate 01 isshown. Three motors are visible: a Z-axis motor 05Z, adjacent to aZ-rail footer 17; a lambda motor 05L, which rotates the turntable, notshown, around the lambda axis, which is the center of the lambda motorshaft, not shown; and a theta motor 05TH, which move the arm 07 in anarc around the theta axis, which is the center of theta motor shaft, notshown. The lambda axis revolves around the theta axis. All three motorsare mounted with spacers, not shown. See FIG. 6 for a schematic view ofthe relationship between the lambda and theta motors, and theta motion.The lambda motor 05L is attached to the turntable, not shown. The lambdamotor and the turntable are on opposing sides of the base plate 01.There is a penetration in the form of a curved slot, 41, in the baseplate, through which the lambda motor connects to the turntable. A shaftgrabber, not shown, connects the shaft of the Z-axis motor 05Z to thethreaded rod, shown as 11 in FIG. 1. The 3D printer is supported onthree legs, 03. One embodiment uses NEMA Standard motor size “NEMA 17”for one or more of the four motors in the printer. Motors may be steppermotors or servomotors, or another type of motor (such as PZT orhydraulic motors). We discuss primarily stepper motors in this document.

A novel embodiment implements motion damping for the theta movement, thelambda movement, or both, by taking advantage of the slot 41 shown inFIG. 2. Damping for the theta axis may be accomplished by the use of afriction liner, spacer, or component on the inside of slot 41 that makescontact with the base plate penetration from motor 05L to the turntable.Damping for the lambda axis may be accomplished by the use of a dampingelement comprising one or more friction sleeves, bushings, brushes,pressure plates, fittings or components around (fully or partially) therotating lambda shaft of motor 05L (or an extension thereto), whereinthe damping element which makes contact with that shaft. In one novelembodiment, a single component, which may be monolithic, constructedfrom two monolithic components, or not monolithic, provides damping forboth the lambda and theta motions. For example, a press-fit liner may beplaced in the slot which provides friction and damping both as thelambda motor shaft moves long the length of the shaft (theta motion) andalso provides friction and damping as the lambda motor shaft rotates(lambda motion). Another novel embodiment uses a sleeve or bushing toimplement at least part of motion damping for both the lambda and thetamotions. For example, this sleeve around the rotating lambda motor shaftprovides damping for the lambda motion on the inside of the sleeve, anddamping for the theta motion on the outside of the sleeve, as the sleevemoves along the length of the slot, 41. By altering the pressure,surface size, surface type, and any optional lubricant or friction fluid(such as wax) differently for the inside and the outside of the sleeve,and the surfaces of the lambda motor shaft and the inside of the slot,the damping for the lambda and theta motions may be controlled, at leastto an extent, independently. In one embodiment both a slot lining and ashaft sleeve are used. In one embodiment the sleeve is at leastpartially round on the inside and shaped to match a portion of the sloton the outside. In such an embodiment, the combined damping element maybe monolithic.

In one embodiment the one or more damping elements described above arefield replaceable without the use of tools. Such replacement may be formaintenance. In another embodiment, different damping elements may befield interchangeable to achieve intentionally different dampingfactors.

Suitable materials for the damping elements include composites, felt,hard rubber and plastics, such as polyethylene, Teflon, PTFE, Nylon orother fluoropolymers or semi-aromatic polyamides. Specifically claimedare a monolithic damping element for the lambda motion; a monolithicdamping element for the theta motion; and a monolithic damping elementfor both the lambda motion and theta motion with a single element.Specifically claimed are damping configurations that use the slot 41 inthe base plate 01 as part of the damping element or function.Specifically claimed are damping elements and configurations asdescribed for use in a SCARA arm. Specifically claimed are dampingelements and configurations as described for use in an inverted SCARAarm. Specifically claimed are damping elements and configurations asdescribed for use in an inverted SCARA arm in a 3D printer.

In some embodiments, the printer dynamically measures one or moredamping parameters, of the above described damping elements, and thenincorporates the one or more measured damping parameters into theprocessing of source move commands into motor control outputs. One wayto measure the damping is to drive the lambda or theta axes at maximumvelocity, and then instantly freeze the drive waveforms to a fixedvalue, effectively dropping the drive velocity to zero. Shaft positionencoders provide the actual rotational positions of the motor shafts,and thus the turntable rotational positions by virtue of the stiffnessand lack of backlash between the motor shafts and the turntable. Thetime and rotational distance traveled may then be used to compute theeffective damping, for that real time configuration of the machine andany part on the build surface. In addition, resonant frequencies forboth lambda and theta axes may be measured, similarly, including morethan one resonant frequency on either or both axes. Knowledge ofresonant frequencies may be used, for example, to reduce velocity oracceleration when motion would be at or near a resonant frequency. Suchmeasurement(s) and use(s) may be claimed.

Dynamic damping measurement not only compensates for machine variations,such as temperature, age and wear, but also may compensate forvariations in the weight of a piece being built. Thus, not only maydamping vary as a part is being constructed, but also the varyingdamping may be measured once or more during part construction and usedto alter, improve or compensate for the processing of source movecommands into motor control outputs, during part construction.

Damping is generally viewed as part of a spring-mass-damping system.Typically, it is ideal to have critical damping in systems, althoughslight under-damping, with respect to desired part tolerance, may permithigher speed operation. In some embodiments, it is difficult to separatespring-mass-damping parameters separately for the theta and lambda axes.Thus, a single damping element that effectively damps the entire systemmay be the simplest implementation of damping and be suitable forapplications. The use of a single damping element to damp two axes, inparticular the axes of these embodiments, may be novel and so claimed.However, in other embodiments spring-mass-damping parameters may bedetermined separately for the theta axis and the lambda axis, eitherdynamically for one machine, or statically in advance of operation,including determination by modeling, theoretical calculations, or both.For example, only the theta motor may be moved and the theta motor shaftposition sensor used to observe and then compute spring-mass-damping forthis axis. This movement and measurement is then repeated similarly bymoving only the lambda motor. If the build surface is empty, both themass and springiness of the machine elements are then accuratelymeasured and thus known. Thus, wear or intentionally created othervariations of damping parameters may be measured by these elements andthese methods. Note that acceleration or velocities, during thismeasurement or calibration, may be higher, even considerably higher,than the maximum acceleration or velocities normally used duringoperation. Note that due to the stiffness of the machine design, anobject on the build surface may contribute the bulk of springiness ofoperational spring-mass-damping. Therefore, dynamic measurements ofspring-mass-damping are desirable. Since the mass of the components inthe machine is known in advance, and the mass of the object beingconstructed is easy to compute at any progress point during the build,and damping parameters may also be known in advance of the start of abuild, it is possible to measure and then compute the springiness of anobject being built during building, and then use this measurement toalter motor outputs. In particular, lower acceleration or lower peakvelocities may be used, or longer dwell time, in order to permitmechanical settling to improve final object build accuracy. Such dynamicmeasurements, computations and use may be novel and may be so claimed.Note also that springiness and damping parameters of thespring-mass-damping system may vary substantially between rotationalmovement and linear movement, and may vary substantially from one linearmovement to an orthogonal liner movement. For example, consider theconstruction of a tall, thin wall. The object, when moved in thedirection of the wall axis, is stiff; while movement perpendicular tothe wall axis is springy. Therefore, in some embodiments, it isdesirable to measure parameters of the spring-mass-damping systemsseparately for some or all of these axes and to combine both known (inadvance of a build) and real-time measurements of spring-mass-dampingparameters, in particular, springiness. Having shaft position sensors onthe motor shafts provides the ability to dynamically measure dampingduring object construction on a 3D printer, and this is a novel benefitof this design embodiment. Damping embodiments, including combinationsdiscussed in this paragraph, are explicitly claimed.

FIG. 3 shows an exemplary front view. Duplicate reference designatorsfrom other Figures refer to the same component. The base plate is shown01. One motor, the lambda motor 05L, is visible. Three legs 03 areshown. The Z-rail footer 17 is shown. The Z-rail 02 is shown. The Z-axisthreaded rod 11 is shown. An end view of the boom 06 is shown. Anenclosure cover 27 for a portion of the extruder, filament drive motor,and fan, is shown. 16 shows the extruder, partially visible below theenclosure cover 27. In this Figure, the print head, or extruder nozzle,is visible as the lowest portion of the extruder. The turntable 23 isvisible with a platter or build surface 18 resting on top. The driveshaft, not numbered, of the lambda motor 05L is just visible,penetrating the base plate 01 and connecting at the bottom center of theturntable 23. This drive shaft penetrates through the base plate 01through a curved slot, shown as 41 in FIG. 2.

FIG. 4 shows an exemplary side view. Duplicate reference designatorsfrom other Figures refer to the same component. The base plate is shown01. Two of the three legs 03 are visible. Alternative embodiments usefour legs, which may include leg levelers. The lambda motor 05L and thetheta motor 05TH are shown. The arm 07 is shown. The Z-rail footer 17and the Z-rail 02 are shown. The boom 06 is shown. The extruder 16 withthe print head, also called the nozzle, is visible. The boom 06 rides onthe Z-rail 02 via four bearings 15. The turntable 23 is visible, with aplatter or build surface 18 on top. FIG. 4 also shows a schematic viewof a micro-switch or other sensor 42, used to measure turntable orplatter skew, as described elsewhere. Note that in practice it isnecessary that the extruder 16 and its print head do not interfere withthe micro-switch function, and vice-versa. The extruder is lower thanthe micro-switch, for example, in the range of 0.5 to 10 mm lower.Interference is avoided by having the build surface move outside of theprint area. The Z-axis move distance for this action is such that theextruder nozzle misses the build plate or build surface 23, therebyallowing the micro-switch to make contact with the build surface. Thevertical distance between the micro-switch and the extruder nozzle isknown and that offset is applied to the micro-switch readings during themachine calibration process. The theta motor may be used to rotate theturntable for this purpose. Hysteresis in the sensor may be cancelled byusing only one or both state changes of the sensor. Sensors other than amicro-switch may be used to measure or determine turntable, platter orbuild surface skew, such as magnetic or inductive sensors, Hall-effectsensors, optical or acoustic sensors, or vision-based sensors.Reflective or interference patterns may be used as part of turntable orplatter distance determination, including turntable, platter or buildsurface skew. Skew is ideally measured at three places, equally spaced,near the perimeter. However, either fewer or more measurement locationsmay be used. Note that in some embodiments it may be advantages tomeasure skew directly on the build surface, while in other embodimentsit may be advantageous to measure skew directly on the turntable. Morethan three measurements may be used to more accurately compute buildsurface skew, or may be used to measure warp, or both.

Some embodiments may include automatic level detection, or automaticlevel adjustment (or instructions to a user how to adjust), or both.

The fourth motor, the filament driver motor, drives the filament throughthe extruder head and the nozzle. The rate at which this motor drivesthe filament is the primary way that the device sets a material feedrate, for a given filament size and structure. Note that depositingvoxels at a desired rate (e.g., voxels per second) also requiresadjusting the effective speed of the platter at the nozzle head. Thevoxel deposition rate is proportional to the material feed rate dividedby the instantaneous linear speed of the platter under the nozzle.

A circuit board, not shown in Figures, comprises the electronics to runthe device. Firmware or software, or both, is located on this board. Insome embodiments, a boot loader on the circuit board downloads softwarevia a cable or wireless connection, not shown. The circuit board may belocated under the base plate 01, or in another location. A portion ofthe electronics or software to run the device may not be located on thedevice. For example, a portion of the software to run the device may belocated in a PC, server, mobile electronic device, or the like, andcommunicate with the device over a wired or wireless connection, notshown.

A power button assembly may comprise an LED power button ring, a cover,and a power button shown as 30 in FIG. 1. In some embodiments the “powerbutton” has additional or other uses besides turning power on and off.For example, it may be used to change from a standby state to an activestate, or vice-versa; it may be used initiate a reset, cold-start,warm-start, software update, calibration cycles, stop building, pause,or other operations. Such multiple operations may be accomplished byholding the button down for a predetermined time, or by pushing it apredetermined number of times, or both. An alternative name for thepower button is control button.

FIG. 5 shows an embodiment of an improved, and claimed, waveform todrive a stepping motor. As those in the art know, stepping motorwaveforms were originally square waves, and then those were improvedwith “micro stepping” using staircase waveforms. Micro-stepping providedmore angular motor positions than achievable by the basic step size ofthe motor. For example, a motor with 400 basic steps (0.9° per step)might have eight times this many angular locations, or 3200 micro-steps,if an 8-level staircase waveform is used for drive. An improvement overmicro-stepping is a sine-wave drive, where two sine wave signals, eachrepresenting the nominal current through a coil, operate 90° out ofphase to achieve steady rotational velocity. Although angular resolutionof the motor is now limited to the accuracy of the sine wave, inherentnon-linearity and other factors in both the design and fabrication ofthe motor limit accuracy such that the accuracy limitation is typicallylarger than the resolution limitation.

A claimed embodiment provides an improvement over sine wave drive. Amodified pair of sine wave drive signals, such as shown in FIG. 5,provide improved linearity, improved accuracy, improved repeatability,and improved holding torque over sine wave drive. Linearity is definedas the graphical relationship between a desired angle and the actualangle, typically for angles covering 360° of a drive signal—that is,four full basic motor steps. Accuracy is defined as the error betweenone desired angle and the actual angle.

In FIG. 5, the horizontal axis 51 is marked in arbitrary angularrotation units. The vertical axis 52 shows motor coil current,normalized so that 1.0 is peak current. The solid black line 54 showsthe current in one coil; the dotted line 53 shows the current in thesecond coil. Point 57 shows peak positive current in the first coil;Point 58 shows peak negative current in the second coil. Note that atthese two peaks, 57 and 58, the current in the other coil is zero. Inone embodiment, mixing together a square wave signal with a sine wavesignal creates the idealized waveform. Another embodiment additionallyuses a “smoothed” square wave in the mix. Details are described below.One goal and effect is to minimize “small currents” into coils, as thesehave minimal beneficial effect on linearity, accuracy, or holdingtorque. Thus, current values above 0.5 are preferred, shown as timelocations 53, 54 and 56 of the coil currents, while lower values ofcurrent that would exist in a sine wave drive are set to or near zero,shown as points 55. The parameters that create the exact shape may bedetermined theoretically from the motor design or practically viatesting a particular motor in a particular configuration.

The improved sine wave drive is described in detail, below.

Step-Less Stepping Motor Driving

Let the current across each coil of a two pole stepping motor berepresented by curves such as two ideal sine waves, 90° out of phase. Asthe phase goes from 0 to 360°, four complete basic motor steps areproduced. Driving the stepper directly through this phase-curve insteadof traditional stepping we achieve a kind of super-granular resolution.Any intermediate value between the full-step values is valid and theresolution of the stepper circuit is only limited by the accuracy withwhich we are able to control the currents (using PWM, for example), andknowledge of the nonlinearities of the given motor.

A sinusoidal drive might work for an ideal motor, but such a motor doesnot actually exist. Based on experimentation we have arrived at a phasecurve shape that will drive most stepping motors very smoothly at lowspeeds given two adjustable parameters: “sinusness” and “smoothness.”Generating this curve, such as that shown in FIG. 5, is the concern ofthe function mo_set_phase, as shown in the code below:

// Moves the twister arm/platter assembly to track // position of thesimulated gantry robot static void maintain_xy_motion(float x_, floaty_) {   static float distance, x, y;   uint8_t stage = motion_tick %TWISTER_MAINTENANCE_   STAGES;   switch (stage) {    case 0: x = x_; y =y_; break;    case 1: distance = sqrt(x*x+y*y); break;    case 2: theta=    2*asin(distance/(2*ARM_LENGTH))+theta_offset; break;    case 3:lambda = theta/2-acos(y/distance)*signof(x);     break;    case 4:set_motor_position(MOTOR_THETA, theta,    THETA_STEPS_PER_REVOLUTION);break;    case 5: set_motor_position(MOTOR_LAMBDA, lambda,   LAMBDA_STEPS_PER_REVOLUTION); break;   } } float square_sin(float x,float smoothness) {  return (2*atan(sin(x)/smoothness))/M_PI; } floatsquare_cos(float x, float smoothness) {   return square_sin(x+(M_PI/2),smoothness); } void mo_set_phase(uint8_t motor, float radians, floatrate, float modulator) {  float _s, _c;  uint8_t base_coil = motor*2; float sinusness = sinusness_table[motor]; // i.e. 0.41  floatsmoothness = smoothness_table[motor]; // i.e. 0.008  _s =sin(radians)*sinusness+square_sin(radians,  smoothness)*(1.0-sinusness); _c = cos(radians)*sinusness+square_cos(radians, smoothness)*(1.0-sinusness);  set_coil(base_coil, _s);  set_coil(base_coil+1, _c); }square_sin generates a continuous derivable square-like wave with thesame phase properties as a sinus curve and with adjustable edgesmoothness. A smoothness of 1.0 yields an actual sine wave, while thefunction approaches an actual square wave as smoothness asymptoticallyapproaches 0.

In our implementation in this embodiment the square wave has the role of“skipping” through the “dead zone” where the current in each coil is solow that little to no torque is applied. The smoothness of the wave isused to avoid introducing noise or shaking into the system as the curvetransitions from one polarity to the next.

Next, this square wave is mixed with a certain amount of traditionalsine wave. The sinusness parameter specifies the proportions of the mix.As sinusness approaches 1.0 the square-like wave is replaced with a sinewave. The sinusness and smoothness values are determined experimentallyfor each motor in the assembly. Our current setup uses motors that runwell with a sinusness of 0.41 and a square wave smoothness of 0.008.Revisiting our phase-diagram, our functions now look like FIG. 5. Seethe code below for one embodiment:

// These curves are then fed to our PWM-driver like this: // There arefour coils, two for each motor. Current is signed. static voidset_coil(uint8_t coil, float current) {  uint8_t base_channel = coil*2; if (current > 0.0) {   set_pwm(base_channel, current);  set_pwm(base_channel+1, 0);  } else {   set_pwm(base_channel, 0);  set_pwm(base_channel+1, -current);  } } // The pulse length that willyield full duty cycle #define PWM_MAX 750 // There are 16 channels, fourfor each motor. Saturation is // unsigned. static void set_pwm(uint8_tchannel, float saturation) {  if (saturation < 0) { saturation = 0; } else if (saturation > 1.0) { saturation = 1.0; }  uint32_t dutycycle =floor(PWM_MAX*saturation);  switch(channel) {   // PWM hardwareregisters for the STM32 ARM processor   case 0 : TIM3->CCR1 = dutycycle;break;   case 1 : TIM3->CCR2 = dutycycle; break;   case 2 : TIM3->CCR3 =dutycycle; break;   case 3 : TIM3->CCR4 = dutycycle; break;   case 4 :TIM5->CCR1 = dutycycle; break;   case 5 : TIM5->CCR2 = dutycycle; break;  case 6 : TIM5->CCR3 = dutycycle; break;   case 7 : TIM5->CCR4 =dutycycle; break;   case 8 : TIM1->CCR1 = dutycycle; break;   case 9 :TIM1->CCR2 = dutycycle; break;   case 10: TIM1->CCR3 = dutycycle; break;  case 11: TIM1->CCR4 = dutycycle; break;   case 12: TIM4->CCR1 =dutycycle; break;   case 13: TIM4->CCR2 = dutycycle; break;   case 14:TIM4->CCR3 = dutycycle; break;   case 15: TIM4->CCR4 = dutycycle; break; } }

Driving the stepping motors this way yields the ability of nearcontinuous step-resolution and noiseless operation at very low speeds.Low noise is novel benefit of stepper-motor equipment designed for usein home, lab or office environments.

Details of Coordinate Translation

Twister is the name of one particular embodiment of software thatperforms coordinate translation, also called coordinate.

Twister works by running a simulated “shadow” Cartesian robot inX-Y-Z-space, then mimicking the motions of the Cartesian robot in theangular coordinate space of the present printer mechanism. We call thespace of the embodiment the theta, lambda, Z space where theta describesthe rotation angle of the inner (arm) motor while lambda describes therevolution of the outer (turntable) motor. The Z-axis of the embodimentis a conventional linear axis actuated via a lead screw.

The Cartesian shadow-robot software is essentially a slightly modifiedversion of the ubiquitous Grbl CNC firmware that can be found here:http://github.com/grbl/grbl.

Grbl works by executing a small kernel MOTION_TICKS_PER_SECOND times persecond. A typical rate would be 30 kHz, however ranges from 1 kHz to 300kHz may be used. Typically, such rates depend at least partially onmachine size. Twister piggybacks on this kernel executing the functionmaintain_xy_motion for every time-step. It is the task of this functionto keep the theta-lambda assembly in sync with the X-Y position of theshadow robot. Sample code is shown below:

  // Update the position of the arm/platter assembly maintain_xy_motion((1.0f*st.position[X_AXIS])/PLANNER_STEPS_PER_MM,(1.0f*st.position[Y_AXIS])/PLANNER_STEPS_PER_MM);

The conversion to floating-point division by PLANNER_STEPS_PER_MM hasthe effect of converting the shadow coordinates instepper-motor-step-counts to a floating-point millimeter position.

The transfer function code from X-Y-coordinates to theta-lambda is shownin the code below:

-   -   d(x, y)=sqrt(x*x+y*y)    -   theta(x, y)=2*arcsine(d(x, y)/(2*ARM_LENGTH))    -   lambda(x, y)=theta(x, y)/2−arccosine(y/d(x,    -   y))*signof(x);

Where the d function yields the magnitude of the [x, y]-vector (i.e. thedistance from the center of the platter to the tip of the tool in theX-Y-plane), ARM_LENGTH is the length of the arm (in the same unit ofscale as x and y). Signof yields 1.0 for all values>0, −1 for all valuesless than 0, and 0.0 for exactly the value 0.0.

Maintain_xy_motion takes this transfer function and for performancereasons, it multiplexes the calculations across time steps completingone small unit of calculation for every motion tick. Every sixthcompletion of the cycle in this function updates the theta-lambda motorstates completely. This is shown in the code, below:

// Moves the twister arm/platter assembly to track the position of //the simulated gantry robot static void maintain_xy_motion(float x_,float y_) {  static float distance, x, y;  uint8_t stage = motion_tick %TWISTER_MAINTENANCE_STAGES;  switch (stage) {   case 0: x = x_; y = y_;break;   case 1: distance = sqrt(x*x+y*y); break;   case 2: theta =  2*asin(distance/(2*ARM_LENGTH))+theta_offset; break;   case 3: lambda= theta/2-acos(y/distance)*signof(x);    break;   case 4:set_motor_position(MOTOR_THETA, theta,    THETA_STEPS_PER_REVOLUTION);break;   case 5: set_motor_position(MOTOR_LAMBDA, lambda,   LAMBDA_STEPS_PER_REVOLUTION); break;  } }

Where motion_tick is a counter that increments for every iteration ofthe motion-kernel at the rate of MOTION_TICKS_PER_SECOND. Inputparameters x_(—) and y_(—) give the desired position of the toolrelative to the center of the platter and must be in the same unit oflength as the constant ARM_LENGTH. TWISTER_MAINTENANCE_STAGES equals 6,but may be set higher to reduce the processor load by effectivelyreducing the update frequency of the assembly.THETA_STEPS_PER_REVOLUTION and LAMBDA_STEPS_PER_REVOLUTION is thesteps-per-revolution for the respective motor in the machine. In thecurrent prototype these values are both 400 because we are using motorswith 0.9 degrees per step. Set_motor_position is called with theidentifier of a target stepper motor, the desired current angle of thismotor and the number of steps per revolution of this motor. Thisfunction is very simple, effectively just calling mo_set_phase for thegiven motor with the angle converted to a phase angle for the magneticfield in the given stepper motor. This is shown in the code below:

  static void set_motor_position(  uint8_t motor,  float angle, uint16_t steps_per_revolution) {  mo_set_phase(motor,angle*(steps_per_revolution/4), 0, 0); }

The “phase” of a motor refers to the angle of the magnetic field in themotor coils. The angle parameter above refers to the angle of a completerotation of the motor. The expression above converts angle to a phasevalue for that specific angle of the motor. As long as the motor isdriven relatively slow and it never looses a full step, this will alwayskeep the motor at the actual provided angle in this function call.

Platter Tilt, or Skew Compensation

The text below describes one embodiment of measuring and correcting forturntable or platter skew.

First the position of the theta motor is established by running itclockwise until the arm trips a micro-switch or other sensor placed atthe outer extreme of the arm swing area. The theta motor is retractedslowly and its angular position is zeroed when the micro-switchdisengages.

The lambda motor does not need to be homed, because the orientation ofthe platter is arbitrary when the print starts, so the position of thelambda motor is summarily zeroed at the start of the homing cycle.

A second micro-switch is placed under the Z-axis boom such that it maybe lowered and raised to probe the height of the turntable, platter orbuild surface perimeter at different points. The platter shaft slot isshaped so that the platter may be moved slightly out of the way of thetool. There is also an opening in the base plate that allows the tool,or extruder head, to sink below the base plate when the platter is movedaside in this fashion. This allows the micro-switch on the boom tocontact the perimeter of the platter.

The measurements are taken by lowering the boom until the switch closes,then lifting the boom slowly and noting the Z-position at which themicro-switch changes switch state. In a current implementation of thehoming cycle this measurement is performed three times at equalintervals along the perimeter (every 120 degrees). Sensors other than amicro-switch, operating with equivalent functionality, may be usedaccomplish the same task with equivalent motions.

Calculating the Tilt-Plane

The homing cycle yields measurements at three points along the perimeterof the platter or build surface. For increased accuracy in someembodiments additional measurements are taken until a consistent planefor the build surface is established. The measurements are used tocalculate the tilt plane of the platter or build surface. The anglesprovided to the function are the angles along the platter or buildsurface with respect to the tool position when lambda==0.0. The Z valuesmay be in mm units. The radius is the distance from center to themeasurement point, which are incidentally equal for all measurementsbecause of the way the measurements are taken in one embodiment. Thefunction init_wobble_corrector takes these parameters and sets up theconstants for a plane equation as shown in the code below:

  void init_wobble_corrector(float radius,  float angle0, float z0, float angle1, float z1,  float angle2, float z2) {  // Calculate theCartesian points for the samples  float p1[ ] = {cos(angle0)*radius,sin(angle0)*radius, z0};  float p2[ ] = {cos(angle1)*radius,sin(angle1)*radius, z1};  float p3[ ] = {cos(angle2)*radius,sin(angle2)*radius, z2};  // Convert to two vectors by subtracting one float v1[ ] = {p2[0]-p1[0], p2[1]-p1[1], p2[2]-p1[2]};  float v2[ ] ={p3[0]-p1[0], p3[1]-p1[1], p3[2]-p1[2]};  // Find the cross product ofthe vectors found in Step 1.  plane_a = v1[1] * v2[2] − v1[2] * v2[1]; plane_b = v1[2] * v2[0] − v1[0] * v2[2];  plane_c = v1[0] * v2[1] −v1[1] * v2[0];  // The coefficients a, b, and c of the planar equationare  //  i.e. 30, −48, and 17.  // So we have 30x − 48y + 17z = d.  //To find d, we simply plug one of the three points into  //  theequation.  // For example, if we select the point (1,2,3), we get  //(30)(1) − (48)(2) + (17)(3) = −15  plane_d =plane_a*p1[0]+plane_b*p1[1]+plane_c*p1[2]; }

Applying the Compensation

Using the data in some embodiments set up a transformation matrix tocorrectly rotate and transform the Cartesian coordinates of the ghostgantry robot to compensate for the tilt of the platter or build surface,which would then compensate for all three axes, but observing that thetilt is usually less than half a degree, it has proved sufficient inthis embodiment to just skew the build surface (here, the platter top)by adding a displacement value to any Z-coordinate as it is acceptedfrom the Gcode. To find the value to add to any given Z-coordinate atany given [x, y]-point one uses the planar equation as shown in the codebelow:

  float act_wobble_correct_zero_z_at(float x, float y) {  return(plane_d-plane_a*x-plane_b*y)/plane_c; }

This function yields the Z-location of the platter or build surfaceunder the tool (e.g. nozzle or extruder head) at the specific [x,y]-coordinate. This displacement is added to the Z-coordinates as theyare accepted into the motion plan of the simulated gantry robot from theG-code-parser, as shown in the code below:

  // Add a new linear movement to the motion plan. voidplan_buffer_line(float x, float y, float z, float e, float feed_rate,uint8_t invert_feed_rate) {  // Prepare to set up new block  block_t*block = &block_buffer[block_buffer_head];  // Apply wobble correctionfor off axis platter  z += act_wobble_correct_zero_z_at(x, y);  [...] }Dealing with the Possibility of Near Infinite Rotation Speeds

Implementing a controller for an exotic, or angular, robot geometry bytransforming the output of a motion control system created for anothergeometry in real time is, in the context of one embodiment, a costeffective way to achieve an effective implementation, in particular,with respect to performance and cost. The results in most cases are inpractice equivalent of what a native motion control algorithm wouldyield; however, there is one trouble spot:

When the shadow gantry robot moves close to the pivot point of theplatter, it does not know that its output may require the platter torotate at speeds approaching infinity. One simple fix for this problemis to implement a kind of “time dilation” where a subsystem monitors theactual speeds of the real robot and adjusts the time base of thesimulated Cartesian robot to ensure that the velocities stay within therealm of the physically possible—especially avoiding impractical speeds.

Such measurements, computations and adjustments to operation may benovel and may be claimed.

The speeds are measured by monitoring the rate of change in the thetaand lambda angle variables in the motion controller at regular intervals(such as 1 kHz, or in the range of 200 Hz to 20 kHz), as shown in thecode below:

  static void measure_theta_lambda_rates( ) {  float elapsed =1.0f*(motion_tick −  rate_sampled_at_tick)/MOTION_TICKS_PER_SECOND; theta_rate = (theta-theta_sample)/elapsed;  lambda_rate =(lambda-lambda_sample)/elapsed;  theta_sample = theta;  lambda_sample =lambda;  rate_sampled_at_tick = motion_tick; }

The time_warp factor is maintained with a certain hysteresis as shown inthe code below:

// Calculates the fraction of max speed currently held by //  the mostrapidly moving subsystem. // 1.0 means the system is running at exactlythe maximum //  allowed rate. Used to control time warp braking. staticfloat fraction_of_max_physical_speed( ) {  return fabs(lambda_rate)/MAX_LAMBDA_RATE_RADIANS_PER_SECOND; } // Bends timeto keep actual physical motion within the //  specified boundaries ofthe machine. static void maintain_time_warp( ) {  floatmax_speed_fraction =  fraction_of_max_physical_speed( );  floatmax_time_warp = 1/max_speed_fraction;  // If speed already more thanallowed, just hard-brake  if (time_warp > max_time_warp) {   time_warp =max_time_warp;  }  // When speed within 20% of max speed, start braking. if (max_speed_fraction > 0.80) {   time_warp *= 0.99;  } else if(max_speed_fraction < 0.9) {   time_warp *= 1.01;  }  if (time_warp >1.0) {   time_warp = 1.0;  } }

The specifics of how the gantry robot control software is modified toallow time_warp_ing may be immaterial to this document, suffice it tosay that the time_warp modifies the step generation rate proportionallysuch that a time_warp of 0.5 runs the shadow bot at a speed half of realtime.

A very special case must be handled separately. When a movement passesthrough the exact center of the platter, some of the mathematics in thecontrol software breaks down. The required speed according to itsequations would be exactly infinity. At this point the shadow bot mustbe stopped completely for a spell while the platter is rotated 180degrees at maximum rate. This is handled as a special case as a specialcase in the software.

3D source file formats include STL (stereo lithography file format),Collada, ASE, S3D, U3D, DWF, DXF, 3DS, OBJ and STL. Source file formatmay pass through “slicer” software, which may be a component of anembodiment, or not, to produce a file containing a sequence of G-codesor Gcodes. The file containing the Gcodes may be a source file. ISO 6983is often considered the most appropriate Standard for G-code

Definitions

“3D machine tool”—includes three axes within a 4D, 5D or 5D machinetool.

“Build area”—refers to horizontal area on which an object may beprinted, typically on the platter or build surface, for a 3D additiveprinter.

“Controlled axis”—refers to an axis that is controllable to desiredposition, either a linear position or a rotary position, including acontrolled velocity between positions, and excludes a continuousrotational axis, even if the rotational speed is variable, for example,a drill press or lathe rotational axis. The controllable desiredposition resolution should be comparable to the accuracy of desiredfeature size on a work piece on the machine.

“Drive screw compensating device”—a device or sensor designed tocompensate for imperfections in a drive screw or its implementation,such as a drive screw backlash compensator. Such a compensating devicemay be mechanical, electronic, or software.

“Mechanical components of the first motion”—All mechanical componentsthat move with the first motion.

“Open on an arc”—refers to the device being free of obstructions, suchas frame element or other element, in the horizontal plane, from thelambda axis, in a circular arc, from any height of an object beingprinted or that might be printed.

“Part is affixed”—there are many ways a part may be affixed to a buildarea or tool range area. It may be affixed only by gravity. For anadditive 3D printer, the stickiness of the additive material issufficient to affix that portion, and the rest of the part as it isbuilt. Note that in many cases an intermediate surface may be used, asone does not generally want to print directly on a portion of themachine, such as a turntable or platform. If platforms are cheap ordisposable, or it is easy to remove a part completely from a platform,then the platform may be the intermediate surface. For subtractivemanufacturing, clamps, vices, or other devices may be used.

“Part surface”—refers to surface on which a part is placed or secured,for either additive or subtractive machining.

“Planer tool area”—this is the area on the build surface, platter,turntable, build plate or other intermediate surface with defines thearea in which the tool head is able to position, relative to thesurface. This may be smaller than a platform, as it is helpful that theplatform extends past every portion of a possible part.

“Platter, build plate or build surface”—generally refers to an actualelement or virtual surface connected to the turntable (includingattached by gravity) or an intermediate element between the turntableand the part. The part may be built directly on the build surface, or onanother intermediate element. The build surface may comprise a “planertool area.” Note that in some contexts or embodiments usage of theseterms may be slightly different. For example, if discussing dimensionsof part, the base of the part will be in contact with a build surface oran intermediate layer between the build surface and the actual part.Similarly, calibration and skew measurement or correction may be for aspecific element or surface. Generally, the platter is touching anddriven by the turntable. Thus, the order of elements from top to bottommay be: part, intermediate layer on the build surface, build surface,platter, turntable, turntable drive elements (e.g., the drive motorshaft). Not all such listed elements are used in all embodiments. Theone or more intermediate layers may be part of the embodiment orprovided by a user; the one or more intermediate layers may bepermanent, semi-permanent, or single-use. Equivalent structures orelements operating equivalently may be used and are included in thescope of the claims, even if such equivalent structures or elementprovide additional benefit.

“Real Time”—actions or measurements that occur during execution. Formechanical systems, and control and measurements thereof, real-time isduring relevant motion of the mechanical system, as compared tocomputations in advance or during a simulation, or predeterminedparameters.

“Tool range area”—the area on or over a part surface that is availablefor machining, either additive or subtractive. For part surfaces thatare not horizontal, or on which the machining volume is below the partsurface, the meaning of the term, “over” is adjusted accordingly.

“Turntable”—generally refers to the mechanical component that isconnected to and driven by the lambda and theta motion systems. On topof the turntable may be removably placed a platter or build plate. Thetop surface of the build plate may be the build surface or comprise aplaner tool area on which a part is fabricated; and it is this surfacethat is generally the reference surface for part and machinemeasurements. The build plate and build surface may alternatively beintegral with the turntable.

Ideal, Ideally, Optimum and Preferred—Use of the words, “ideal,”“ideally,” “optimum,” “should” and “preferred,” when used in the contextof describing this invention, refer specifically a best mode for one ormore embodiments for one or more applications of this invention. Suchbest modes are non-limiting, and may not be the best mode for allembodiments, applications, or implementation technologies, as onetrained in the art will appreciate.

May, Could, Option, Mode, Alternative and Feature—Use of the words,“may,” “could,” “option,” “optional,” “mode,” “alternative,” and“feature,” when used in the context of describing this invention, referspecifically to various embodiments of this invention. Examples,explanations and figures using the words “shown” or “code” refer tonon-limiting embodiments. All figures are non-limiting embodiments. Alldescriptions herein are non-limiting, as one trained in the art willappreciate.

Claims of this invention explicitly include all combinations andsub-combinations of all features, elements, examples, claims,embodiments, tables, values, ranges, and drawings in the specification,drawings, claims and abstract. Claims of this invention explicitlyinclude devices and systems to implement any combination of all methodsdescribed in the claims, specification and drawings. Claims of thisinvention explicitly include methods using devices and systems describedin the claims, specification and drawings, in any combination.

Embodiments include a method of manufacturing a part using a 3D printeras described in the claims. Embodiments include a method of scanning apart using a 3D printer as described in the claims. Embodiments includea method of driving stepper motors in a machine tool as described in theclaims. Embodiments include a method of damping lambda and thetarotational axes as described in the claims.

1. A 3D machine tool for the purpose of manufacturing a part comprising:a minimum of two controllable motions: a first motion and a secondmotion; a build surface to which the part is directly or indirectlyaffixed; and a machine tool head; wherein the improvement comprises: thefirst motion is a rotary motion around a first axis; the second motionis a rotary motion around a second axis, wherein the second axis isparallel to and offset from the first axis; wherein the first axisrevolves around the second axis; the build surface is driven in thedirection of the first motion and the build surface is normal to thefirst axis; and the build surface is rotated about the axis of thesecond motion; such that, responsive to the first and second motions,the machine tool head is positionable relative to the build surface overa continuous planar tool range area of the build surface, at a machinetool head distance from the build surface wherein the machine tool headdistance is measured normal to the build surface.
 2. The 3D machine toolof claim 1 wherein: the first motion is driven by a first rotary motor,the “lambda motor;” the second motion is driven by a second rotarymotor, the “theta motor;” the mechanical components of the 3D machinetool between the first and second motors and the build surface,inclusively, are free of any mechanical conversion of motor-generatedrotary motion to linear motion.
 3. The 3D machine tool of claim 2wherein: the mechanical portions of the 3D machine tool that implementthe first and second motions, including the first and second rotarymotors and all mechanical interconnections between the first and secondmotors and the build surface, and the build surface, are free of belts,pulleys, chains, wires, gears, screw drives and hydraulics.
 4. The 3Dmachine tool of claim 2 wherein: the second motion moves the mechanicalcomponents of the first motion, including the first motor.
 5. The 3Dmachine tool of claim 2 wherein: the first motor connects to the buildsurface such that the angular position of the build surface is equal tothe angular position of the first motor shaft.
 6. The 3D machine tool ofclaim 2 wherein: the second motor connects to the first motor such thatthe angle of revolution of the first axis around the second axis isequal to the angular position of the second motor shaft.
 7. The 3Dmachine tool of claim 6 further comprising: a first rotational anglesensor and a second rotational angle sensor wherein the two anglesensors measure, in real time, the rotational angle of the first andsecond motors, respectively; wherein a machine tool controller isconfigured to provide motor control outputs to the first and secondmotors such that the planar tool range area may be moved relative to thetool head; and the motor control outputs for at least the first andsecond motors are responsive to the real time angular measurements ofthe two rotational angle sensors.
 8. The 3D machine tool of claim 7wherein: the first and second rotational angle sensors are mounted onthe motor shafts of the first and second motors, respectively.
 9. The 3Dmachine tool of claim 2 additionally comprising: a third motion drivenby a third motor wherein the third motion is linear.
 10. The 3D machinetool of claim 9 wherein: the third motion drives the machine tool headin a linear motion on a Z-axis that is normal to the planar tool rangearea.
 11. The 3D machine tool of claim 10 additionally comprising: abase plate; a boom driven by the linear motion of the Z-axis, whereinthe boom comprises the machine tool head; a personal electronic devicemount on a mechanical element of the invention, and wherein the mount isadapted to accept a personal electronic device that comprises a wirelessdata interface and a camera; and a machine tool controller with awireless data interface configured to communicate with the personalelectronic device; wherein the controller is adapted to drive at leastthe first and second motions and configured to provide commands over itswireless interface to the personal electronic device, timed such thatconsecutive camera images, taken responsively to the commands and usedas input to a 3D model reconstruction program, will generate from the 3Dmodel reconstruction program a complete, accurate 3D model of a part onthe planar tool range area; and wherein the 3D machine tool is free ofany additional controllable motions;
 12. The 3D machine tool of claim 11wherein: the controller comprises the 3D model reconstruction program.13. The 3D machine tool of claim 10 wherein: the third motor connects tothe machine tool head at least in part via a threaded rod functioning asa drive screw; and the 3D machine tool is free of any drivescrew-compensating device.
 14. The 3D machine tool of claim 10 wherein:the 3D machine tool is an additive-material manufacturing tool, and themachine tool head provides the additive material used to manufacture thepart.
 15. The 3D machine tool of claim 10 additionally comprising: abuild surface skew measuring sensor configured such that an offset ofthe plane of the planar tool range area from the plane normal to theZ-axis is measurable by the sensor; and wherein the build surface skewmeasuring sensor is functional for this purpose during the manufacturingof the part.
 16. The 3D machine tool of claim 15 additionallycomprising: a machine tool controller configured to accept input sourcedata comprising a set of voxels described in an X-Y-Z Cartesiancoordinate system; wherein the controller is configured to providecoordinate translation from the X-Y-Z Cartesian coordinate system to thecoordinate system of the 3D machine tool comprising: two rotational axescorresponding to the first and second motions, and the third, linearmotion; wherein the controller is configured to provide motor controloutputs to the first, second and third motors such that the tool headmay be moved, relative to the build surface, within a continuouscylindrical manufacturing volume with one planar end of the cylindricalmanufacturing volume coincident with the planar tool range area; whereinthe controller's motor control outputs are responsive to themeasurements provided by the build surface skew measuring sensor; andwherein the measurement of the build surface skew measuring sensor maychange during the manufacture of a part.
 17. The 3D machine tool ofclaim 9 wherein: the 3D machine tool is free of a rectangular box frame,encompassing the planar tool range area and extending upwards along thedirection of the third motion, wherein the rectangular box frameprovides required mechanical support for any 3D machine tool componentsthat provide any of the three motions.
 18. The 3D machine tool of claim1 additionally comprising: a base plate comprising a curved base plateslot through which the rotary motion of the lambda motor connectsdirectly or indirectly to the build surface; and a first frictionelement configured to provide damping of the first motion; and whereinthe first friction element is located, at least in part, inside the baseplate slot.
 19. The 3D machine tool of claim 1 additionally comprising:a base plate comprising a curved base plate slot through which the firstrotary motion connects directly or indirectly to the build surface; anda second element configured to provide damping of the second motion;wherein the second element is located, at least in part, inside the baseplate slot.
 20. The 3D machine tool of claim 1 additionally comprising:a base plate comprising a curved base plate slot through which therotary motion of the lambda motor connects directly or indirectly to thebuild surface; a first friction element configured to provide damping ofthe first motion; and a first second element configured to providedamping of the second motion; wherein the first and second frictionelements share at least one common element and wherein the commonelement is located within the slot.
 21. The 3D machine tool of claim 1additionally comprising: a base plate comprising a curved base plateslot through which the rotary motion of the lambda motor connectsdirectly or indirectly to the build surface; a first friction elementconfigured to provide damping of the first motion; and a first secondelement configured to provide damping of the second motion; whereineither or both of the first and second friction elements are monolithicand wherein the first and second friction elements may be the sameelement.
 22. The 3D machine tool of claim 1 additionally comprising: amount, on a mechanical element of the 3D machine tool, for a personalelectronic device wherein the personal electronic devices comprises awireless data interface and a camera; and a machine tool controller witha wireless data interface configured to communicate with the personalelectronic device; wherein the machine tool controller is configured toprovide commands over its wireless interface to the personal electronicdevice, timed so that consecutive camera images taken by the personalelectronic device responsive to the commands, when presented as atime-series of images, show the part being manufactured with a fixedpart orientation relative to the personal electronic device; and whereinthe 3D machine tool, when providing such commands via the machine toolcontroller, is adapted to manufacture a part in at least 90% of the timeit would take the 3D machine tool to manufacture the part if it were notproviding such commands.
 23. The 3D machine tool of claim 1 additionallycomprising: a machine tool controller configured to drive the first andsecond motors with motor drive signals; wherein the first and secondmotors are stepper motors; and wherein the drive signals for the firstand second motors are each dual phase waveforms with each phasecomprising additively both a square wave component and a sine wavecomponent.
 24. A method of manufacturing a part using the 3D machinetool of claim
 1. 25. A method of manufacturing a part using the 3Dmachine tool of claim 8.